I. Field of the Invention
The present invention relates to a method and apparatus for developing multicore microcomputer-based systems.
II. Description of Related Art
There are many applications in which a microcomputer is utilized to control a device oftentimes referred to as the plant. For example, in the automotive industry a microcomputer may be utilized to control the actuation of the engine throttle. In that event, the engine throttle forms the plant.
In order to facilitate the development of such microcomputer-based systems, there have been previously known simulation or development programs which simulate the operation of the system. These previously known programs use real microcontrollers on real plants. Under program control the controller then provides signals to the plant to command the plant to perform the desired operation.
As a part of the development of the microcomputer-based system, it is almost always necessary to debug and fine tune the software executed by the controller. This has been previously accomplished by providing break points within the controller program code. Once a break point is encountered in the controller, the execution of the program halts and enables the programmer to examine the various parameters of both the controller model as well as the plant model. These parameters include the value of internal registers, the status of input and output signals, interrupt status, computed parameter values, etc.
After the desired operation of the system has been obtained, the break point is typically removed. Furthermore, the debugging and fine tuning of the microcomputer and the plant is an iterative process. For example, once a particular section of the controller program has been fine tuned and/or debugged and the break point removed, it is necessary to insert break points in other sections of the program for the controller until the entire program has been debugged and fine tuned to achieve the desired plant operation.
A primary disadvantage of this previously known method for developing controllers and plants is that the insertion of one or more break points within the program for the controller necessarily is intrusive since it requires a change in the programming for the controller. Such intrusive changes in the programming for the controller in turn may result in unwanted and unexpected changes in the operation of either the controller or the plant or both. Such unexpected and unwanted changes in turn require additional debugging and fine tuning of the overall microcomputer-based system.
The previously known microcomputers of the type used to control plants have typically comprised a single central processing unit or CPU. However, modern day microcomputers oftentimes have two or more CPUs or “cores”. For example, a dual core microcomputer includes two independent microprocessors which may independently and simultaneously execute their own individual computer programs. While multicore microcomputers are capable of enhanced operational speed over a single core microcomputer, the programming and debugging of multicore microcomputer systems presents unique challenges.
For example, for the proper programming and debugging of multicore microcomputer-based systems, it is highly desirable that the program load, i.e. the number of instructions executed by each core over a given time frame, be substantially the same. Otherwise, the overall efficiency of the multicore microcomputer-based system is compromised.
Previously, there have been known development systems for accurately debugging multicore microprocessor-based systems which accurately reflect the execution of tie multicore microprocessor-based system. As such, the development of multicore microcomputer-based systems was accomplished by using a development system for a single core microcomputer-based system and applying that system to each core in the multicore microcomputer. This, however, led to inaccuracies in the debugging of the computer system due to inherent interaction between the cores of the microcomputer.